OneThird CMSで使用されているグローバル変数の内、$params, $database, $config, $ut, $html, $plugin_ar は非常に重要なものです
$configは、config.phpで設定される基本パラメータで、サイトURL等様々な値を設定します
$databaseはデータベースにアクセスするオブジェクト(クラス)
$utは、テンプレート、phpどちらでも使えるユーティリティオブジェクト(クラス)
$paramsは、動作に必要なワーキング変数で、$configがconfig.phpで設定されるのに対し、ページデータ等動的に世m混んだ値などが、設定されます
$plugin_arはプラグインの動作を設定したり、ユーザー定義のプラグインを追加したりするときに使います
その中でも特に重要な変数が、$htmlです
$htmlには最終的に出力されるHTMLデータが収納されています
OneThird CMSでは
各種描画関数(レンダラー)が、$htmlにデータをセットし、
$htmlがテンプレート(default.tpl等)に従い、expand_htmlという関数で、テンプレートにデータを流し込み表示する
という仕組みになっています
WrodPress等のCMSでは、プログラムが逐次echoコマンドでHTML出力しているのに対し、OneThird CMSではプログラムの最終段階で、HTML出力を組み立てています
$htmlの内容は自由に改変できますが、以下の配列はシステムでセットされますので、テンプレートファイルで展開する必要があります(テンプレートファイル内に展開するコマンドを書き込む必要がある)
$html['head']は、テンプレートのhead内に展開するようにする
$html['head']にはページタイトル、ディスクリプション、カノニカル等システムが準備するメタデータがセットされる
$html['css']は、ヘッダ内のhead内に展開するようにする
標準プラグイン、テンプレーモジュールの多くが、独自のCSSを執拗とする場合、使用する為展開しないとプラグインが動作しない場合がある
$html['article']は、ページ本文に展開するようにする
標準描画関数、page_rendererが出力先に使用しているため、これを展開しないと標準のページが表示できなくなる
$html['meta']は、bodyタグの終了直前に展開するようにする
プラグインがスクリプト系の出力に使うため、これを展開しないとほとんどのプラグインが動作しなくなる
$html変数は、最終的に展開関数expand_htmlで展開されますが、実際に$htmlの内容を埋め込むのは$ut->expand関数です
テンプレートファイル内の目的の位置に、$ut->expand('配列キー')で、$htmlの内容がバッファに展開されます
$html['配列']は、配列でも文字列でも両方展開が可能です
ですから、例えば$html['meta']に内容を追加したい場合は
$html['meta'][] = "追加したい内容";
で追加できます
追加するもの、例えばスクリプトなど二重に書かれるとまずいものがあります
その場合、$html['meta']['foo_func'] の様に配列名にキーを加えると二重書き込みを防止する事ができます
また、プラグインの中には、たとえは$html['css']['プラグイン名']と配列キーを使っているものがあります
これは、展開前ならその要素を修正できる様にするためです
テンプレートファイル上で、$ut->expandは、テンプレートにかかれている順番で展開されていきますが
物によっては、早く展開するとまずいものがあります
例えば、$html['css']
CSSは、各プラグインから設定されますが、ヘッダ部分に書いてあるため、本文中に書いてあるプラグインタグから呼び出されると既に展開済みでデータが反映されない場合があります
その時のために、expandコマンドには第二パラメータに、遅延読み込みをするかしないかのフラグ設定ができる様になっています
フラグが立っている場合は、その配列の展開は後に回され全ての展開が終わった後、最後にもう一度展開されます